// 流式能够提高大型数据的操作效率

/* 
// 流式读取文件的基本操作
let fs = require('fs')
let rs = fs.createReadStream('./test.txt',{flags:'r',encoding:'utf-8'})
let data = ''

// 单批流入事件，按一定的大小分批读取文件
rs.on('data',function(chunk) { 
    console.log('单批流入数据开始！！！')
    data += chunk
})

// 关闭监听
rs.on('close',function() {
    console.log('流入数据关闭！！')
})

// 结束的监听
rs.on('end',function(){
    console.log('流入数据结束！！！');
    console.log('最终数据：',data)
 });
  */

/* 
  // 读取和写入的结合
let fs = require('fs')
let rs = fs.createReadStream('./img/img1.jpg',{flags:'r'})
let ws = fs.createWriteStream('./test/test1.jpg',{flags:'w'})
let data = ''

// 单批流入事件，按一定的大小分批读取文件
rs.on('data',function(chunk) { 
    console.log('单批流入数据开始！！！')
    data += chunk
    ws.write(chunk,function(err) {
        if(err) {
            console.log('单批流入数据写入文件失败！！！')
        } else {
            console.log('单批流入数据写入文件成功！！！')
        }
    })
})

// 关闭监听
rs.on('close',function() {
    ws.on('close',function() {
        console.log('写入操作关闭')
    })
    console.log('流入数据关闭！！')
})

// 结束的监听
rs.on('end',function(){
    ws.on('end',function() {
        console.log('写入操作结束')
    })
    console.log('流入数据结束！！！');
    console.log('最终数据：',data)
 });
  */


// 使用管道流对文件进行写入
let fs = require('fs')
let rs = fs.createReadStream('./img/img2.jpg',{flags:'r'})
let ws = fs.createWriteStream('./test/test2.jpg',{flags:'w'})
 
 rs.pipe(ws)
 // 关闭监听
 rs.on('close',function() {
     console.log('流入数据关闭！！')
 })
 
 // 结束的监听
 rs.on('end',function(){
     console.log('流入数据结束！！！');
  });
